# -*- coding: utf-8 -*-
"""
@author: wyb
@date: 2023/12/2
@time: 21:57
@desc: 编程读取当
前工作目录中的所有 Excel 文件，并输出为 CSV 文件。
一个 Excel 文件可能包含多个工作表，必须为每个表创建一个 CSV 文件。CSV
文件的文件名应该是<Excel 文件名>_<表标题>.csv，其中<Excel 文件名>是没有扩
展名的 Excel 文件名（例如'spam_data'，而不是'spam_data.xlsx'），<表标题>是
Worksheet 对象的 title 变量中的字符串
"""
import os
import openpyxl
import csv


def excel_to_csv(excel_file):
    # 打开 Excel 文件
    workbook = openpyxl.load_workbook(excel_file)

    # 获取 Excel 文件名（不包含扩展名）
    file_name = os.path.splitext(os.path.basename(excel_file))[0]

    # 遍历 Excel 文件中的每个工作表
    for sheet_name in workbook.sheetnames:
        # 获取工作表对象
        sheet = workbook[sheet_name]

        # 创建 CSV 文件名
        csv_file = f"{file_name}_{sheet_name}.csv"
        csv_file = os.path.join("excelSpreadsheets", csv_file)

        # 打开 CSV 文件并写入数据
        with open(csv_file, 'w', newline='') as csv_file:
            csv_writer = csv.writer(csv_file)

            # 写入表头
            csv_writer.writerow([cell.value for cell in sheet[1]])

            # 写入数据
            for row in sheet.iter_rows(min_row=2, values_only=True):
                csv_writer.writerow(row)

        print(f"Saved: {csv_file}")


if __name__ == "__main__":
    # 获取当前工作目录
    current_directory = os.path.join(os.getcwd(), "excelSpreadsheets")

    # 遍历当前工作目录中的所有文件
    for file in os.listdir(current_directory):
        if file.endswith('.xlsx') or file.endswith('.xls'):
            excel_file_path = os.path.join(current_directory, file)

            # 处理 Excel 文件
            excel_to_csv(excel_file_path)
